命名是最难的两件事之一。

There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton

函数命名是函数做的事情的简写,要描述意图而非细节; 要精确,做到不需要读代码就能够理解函数功能。

特征

  1. 命名不精确
public void processChapter(long chapterId) {
  Chapter chapter = this.repository.findByChapterId(chapterId);
  if (chapter == null) {
    throw new IllegalArgumentException("Unknown chapter [" + chapterId + "]");  
  }

  chapter.setTranslationState(TranslationState.TRANSLATING);
  this.repository.save(chapter);
}

命名中包含 data、info、flag、process、handle、build、maintain、manage、modify,就可能意味着你的命名是不准确的。

  1. 业务相关代码使用技术术语命名

除非技术术语就是你的业务语言

把命名给产品看一下,看能否看懂。

//bad
List<String> bookList;
//good
List<String> books;

//bad
class BookSharedPreferenceUtil{}
//good
class BookStorageUtil{}
  1. 英文规范

注意英文规范,团队一起建立业务词汇表。

  • 不要用拼音,还不如用汉字直接表达;
  • 英文拼写;typo 提示;
  • 英文单词准确;
  • 遵循语法规则;类名代表对象,使用名词;函数代表动作,使用动词。

引起的问题

代码难以理解,还需要去阅读详细代码。

重构方法

改变函数声明(函数重命名)

function circum(radius) {...}

// 简单做法
function circumference(radius) {...}

// 迁移式做法,可以不破坏现有的调用
function circum(radius) {
  return circumference(radius);
}

function circumference(radius) {  
    return 2 * Math.PI * radius;
}

尽量通过函数的名称就能够看出一个函数的用途,而不是通过注释,甚至是实现代码。

变量改名

// 重构前
let a = height * width;

// 重构后
let area = height * width;

命名的使用范围越广,名字的好坏就越重要。

字段改名

// 重构前
class Organization {
  get name() {...}
}

// 重构后
class Organization {
  get title() {...}
}
Copyright © qingeneral.github.io 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-07-21 21:56:06

results matching ""

    No results matching ""